<?php

namespace app\model\user;

use think\Model;
use yzh52521\JwtAuth\user\AuthorizationUserInterface;

/**
 * t_user 会员表
 * @property integer $id ID(主键)
 * @property integer $group_id 组别ID
 * @property string $username 用户名
 * @property string $nickname 昵称
 * @property string $password 密码
 * @property string $salt 密码盐
 * @property string $email 电子邮箱
 * @property string $mobile 手机号
 * @property string $avatar 头像
 * @property integer $level 等级
 * @property integer $sex 性别
 * @property string $birthday 生日
 * @property string $bio 格言
 * @property string $balance 余额
 * @property integer $score 积分
 * @property integer $successions 连续登录天数
 * @property integer $maxsuccessions 最大连续登录天数
 * @property string $prev_time 上次登录时间
 * @property string $login_time 登录时间
 * @property string $login_ip 登录IP
 * @property integer $login_failure 失败次数
 * @property string $join_ip 加入IP
 * @property string $join_time 加入时间
 * @property string $create_time 创建时间
 * @property string $update_time 更新时间
 * @property string $token Token
 * @property string $status 状态
 * @property int $is_agent
 * @property int $agent_id 绑定的分销商id
 * @property int $commission_agent_id 下单分佣的分销商id
 * @property int $source 0未知 1=后台添加 2=小程序 3=H5 4=APP
 * @property int $invite_id 邀请人的会员id
 */
class User extends Model implements AuthorizationUserInterface
{
    /**
     * The connection name for the model.
     *
     * @var string|null
     */
    protected $connection = 'mysql';

    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 't_user';

    /**
     * The primary key associated with the table.
     *
     * @var string
     */
    protected $pk = 'id';

    const SOURCE_UNKNOWN = 0;//未知
    const SOURCE_BACKED = 1;//后台添加
    const SOURCE_MINIPROGRAM = 2;//小程序
    const SOURCE_H5 = 3;//H5
    const SOURCE_APP = 4;//APP

    public function level()
    {
        return $this->hasOne(UserLevel::class, 'id', 'level_id');
    }

    public function group()
    {
        return $this->hasOne(UserGroup::class, 'id', 'group_id');
    }

    public function getUserById($id)
    {
        return $this->field([
            'id',
            'username',
            'nickname',
            'status',
        ])->find($id);
    }
}
